package com.ty.xiaoyu.mapper;

import com.ty.xiaoyu.entity.Topic;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

public interface TopicMapper {

    // 根据发布时间获取帖子列表
    List<Topic> queryListByReleaseTime(@Param("rowIndex") Integer rowIndex, @Param("pageSize") Integer pageSize);

    // 根据最后回复时间获取帖子列表
    List<Topic> queryListByLastTime(@Param("rowIndex") Integer rowIndex, @Param("pageSize") Integer pageSize);

    // 获取帖子数量
    Integer queryListCount();

    // 新增帖子
    Integer insertTopic(@Param("topic") Topic topic);

    // 搜索帖子
    List<Topic> queryListByCondition(@Param("rowIndex") Integer rowIndex,
                                     @Param("pageSize") Integer pageSize,
                                     @Param("condition") List<String> condition);

    // 根据主贴id获取帖子详情
    Topic queryTopicById(@Param("topicId") String topicId);

    // 根据模块id获取帖子列表
    List<Topic> queryListByModuleId(@Param("rowIndex") Integer rowIndex,
                                    @Param("pageSize") Integer pageSize,
                                    @Param("moduleId") String moduleId);

    // 根据帖子id搜索(行锁)
    Topic queryTopicByIdForUpdate(@Param("topicId") String topicId);

    // 更新点赞数
    Integer updateGreatNum(@Param("topic") Topic topic);

    // 更新浏览数
    Integer updateBrowseNum(@Param("topic") Topic topic);

    // 根据用户id获取帖子列表
    List<Topic> queryTopicListByUserId(@Param("userId") String userId);

    // 更新帖子最后回复信息
    Integer updateTopicForLastReply(@Param("topicId") String topicId,
                                    @Param("replyId") String replyId,
                                    @Param("replyNickname") String replyNickname,
                                    @Param("replyTime")LocalDateTime replyTime);
}
